<?php 
//Start the session so we can store what the security code actually is
session_start();

//Send a generated image to the browser 
//createImage(); 
create_image();
exit(); 

function create_image() 
{ 
    //Let's generate a totally random string using md5 
    $md5_hash = md5(rand(0,999)); 
    //We don't need a 32 character long string so we trim it down to 5 
    $security_code = substr($md5_hash, 15, 6); 

    //Set the session to store the security code
    $_SESSION["captcha"] = $security_code;

    //Set the image width and height 
    $width = 140; 
    $height = 40;  

    //Create the image resource 
    $image = ImageCreate($width, $height);  

    //We are making three colors, white, black and gray 
    $white = ImageColorAllocate($image, 255, 255, 255); 
    $black = ImageColorAllocate($image, 0, 0, 0); 
    $grey = ImageColorAllocate($image, 204, 204, 204); 

    //Make the background black 
    ImageFill($image, 0, 0, $black); 
    
    
    $pixel_color = imagecolorallocate($image, 245,245,245);
    for($i=0;$i<400;$i++) {
        imagesetpixel($image,rand()%200,rand()%50,$pixel_color);
    } 
    
    //Add randomly generated string in white to the image
    ImageString($image, 20, 40, 12, $security_code, $white); 

    //Throw in some lines to make it a little bit harder for any bots to break 
    ImageRectangle($image,0,0,$width-1,$height-1,$grey); 
    //imageline($image, 0, $height/2, $width, $height/2, $grey); 
    //imageline($image, $width/2, 0, $width/2, $height, $grey); 
 
    //Tell the browser what kind of file is come in 
    header("Content-Type: image/jpeg"); 

    //Output the newly created image in jpeg format 
    ImageJpeg($image); 
    
    //Free up resources
    ImageDestroy($image); 
} 

function createImage()
{
    $image = imagecreatetruecolor(140, 40);
    
    $background_color = imagecolorallocate($image, 245, 245, 245);  
    imagefilledrectangle($image,0,0,140,40,$background_color);
    
    $line_color = imagecolorallocate($image, 64,64,64); 
    for($i=0;$i<2;$i++) {
        imageline($image,0,rand()%40,140,rand()%40,$line_color);
    }
    
    $pixel_color = imagecolorallocate($image, 0,0,255);
    for($i=0;$i<400;$i++) {
        imagesetpixel($image,rand()%140,rand()%40,$pixel_color);
    } 
    
    $letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
    $text_color = imagecolorallocate($image, 0,0,0);
    
    $word='';
    $len=strlen($letters);
    for ($i = 0; $i< 6;$i++) {
        $letter = $letters[rand(0, $len-1)];
        imagestring($image, 20,  25+($i*25), 10, $letter, $text_color);
        $word.=$letter;
    }
    $_SESSION['captcha'] = $word;
 

    //header("Content-Type: image/jpeg"); 
    header("Content-Type: image/png"); 

    //Output the newly created image in jpeg format 
    //ImageJpeg($image); 
    imagepng($image);
    //Free up resources
    ImageDestroy($image); 
    
}
?>